Electrically addressed non-volatile memory (including “flash” memory, both of which are referred to herein as “flash” memory) is formed in the substrate of an integrated circuit. The flash memory is electrically addressed and can be electrically erased and reprogrammed so that the state of memory is not lost when power is removed from the integrated circuit. Various kinds of flash memory are erased on a block-by-block basis and can be programmed (for example, written to) one bit at a time. A memory cell in the flash memory uses a charge stored in a floating gate of the memory cell to store a logical value. An erased bit of a memory cell is often stored (and read) as a logic “one,” in which case a programmed bit of the memory cell is stored and read as logic “zero.” A read-level voltage that is applied to the control gate of the memory cell is used to read the stored logical value, while the stored charge in the floating gate determines whether the memory cell is read as logic one or zero. The flash memory has a limited number of erase/program cycles, and is subject to errors due to variations in the voltage threshold used to read each of the memory cells in the flash memory. The variations result, for example, from repeated erase/program cycles that progressively affect the ability of a floating gate to hold a stored charge.